﻿Public Class frmGestionUsuarios
    Dim utilidades As New Utilidades
    Dim _formPrincipal As frmPrincipal

    Public Sub New(ByRef form As frmPrincipal)
        Me.InitializeComponent()
        _formPrincipal = form
    End Sub

    Private Sub cmdBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBorrar.Click
        If MessageBox.Show("¿Está seguro que desea eliminar este Usuario?", "Importante", _
        MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then

            Dim myAccesoDatos As New AccesoDatos
            Dim filaSeleccionada As DataGridViewRow
            Dim idUsuario As New String("")
            For Each filaSeleccionada In gridUsuarios.SelectedRows
                idUsuario = filaSeleccionada.Cells(0).Value
            Next

            If idUsuario <> Constantes.id_Usuario_Administrador Then
                Dim myConsulta As String
                Dim tabla As Data.DataTable
                myConsulta = "SELECT ID_EMPLEADO FROM SOLICITUDES_PRESTAMOS WHERE ID_EMPLEADO = " & idUsuario
                tabla = myAccesoDatos.ejecutarConsulta(myConsulta)

                If tabla.Rows.Count = 0 Then
                    myConsulta = "DELETE FROM EMPLEADO WHERE ID = " & idUsuario
                    myAccesoDatos.ejecutarConsulta(myConsulta)
                    Me.buscar(armarWhereConsulta)
                Else
                    MsgBox("El Usuario se encuentra asociado a otros Registros. No es posible su eliminación.", vbOKOnly + vbCritical, "Atención")
                End If
            Else
                MsgBox("El Usuario es el Administrador del Sistema. No es posible su eliminación.", vbOKOnly + vbCritical, "Atención")
            End If

            
        End If

    End Sub

    Private Sub cmdSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSalir.Click
        Me.Close()
    End Sub

    Private Sub frmGestionUsuarios_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        utilidades.confirmarSalirDelFormulario(e)
    End Sub

    Private Sub frmGestionUsuarios_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim myAccesoDatos As New AccesoDatos

        Me.buscar(armarWhereConsulta())
    End Sub

    Private Sub cmdBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBuscar.Click
        Me.buscar(armarWhereConsulta)
    End Sub

    Public Sub buscar(ByVal where As String)
        Dim myAccesoDatos As New AccesoDatos
        Dim myConsulta As String

        myConsulta = _
            "SELECT ID, USUARIO_LOGIN AS USUARIO, (APELLIDO + ', ' + NOMBRE) AS APELLIDO_NOMBRE, " & _
            "CASE WHEN ACTIVO = 'S' THEN 'Si' ELSE 'No' END AS ACTIVO " & _
            "FROM EMPLEADO WHERE 1 = 1 "

        If Not where.Trim = "" Then
            myConsulta = myConsulta & where
        End If

        myConsulta = myConsulta & " ORDER BY USUARIO_LOGIN"

        Me.gridUsuarios.DataSource = myAccesoDatos.ejecutarConsulta(myConsulta)

        Me.habilitarBotonesSegunGrilla()

    End Sub

    Public Function armarWhereConsulta() As String
        Dim where As New String("")

        If Not (txtApellido.Text().Trim() = "") Then
            where = where & " AND UPPER(APELLIDO) LIKE UPPER('%" & txtApellido.Text().Trim() & "%')"
        End If
        If Not (txtNombre.Text().Trim() = "") Then
            where = where & " AND UPPER(NOMBRE) LIKE UPPER('%" & txtNombre.Text().Trim() & "%')"
        End If
        If Not (txtNombreLogin.Text().Trim() = "") Then
            where = where & " AND UPPER(USUARIO_LOGIN) LIKE UPPER('%" & txtNombreLogin.Text().Trim() & "%')"
        End If
        If Me.chkActivo.Checked = True Then
            where = where & " AND ACTIVO = 'S'"
        Else
            where = where & " AND ACTIVO = 'N'"
        End If

        Return where

    End Function


    Public Sub habilitarBotonesSegunGrilla()
        'Dependiendo si la Grilla tiene resultados habilito los botones de Edicion y Borrado
        If Me.gridUsuarios.RowCount < 1 Then
            Me.cmdVer.Enabled = False
            Me.cmdModificar.Enabled = False
            Me.cmdBorrar.Enabled = False
        Else
            Me.cmdVer.Enabled = True
            Me.cmdModificar.Enabled = True
            Me.cmdBorrar.Enabled = True
        End If
    End Sub

    Private Sub cmdVer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdVer.Click
        Dim myAccesoDatos As New AccesoDatos
        Dim filaSeleccionada As DataGridViewRow
        Dim idUsuario As New String("")
        For Each filaSeleccionada In gridUsuarios.SelectedRows
            idUsuario = filaSeleccionada.Cells(0).Value
        Next

        Dim frmUsuario As New frmUsuario(Constantes.Ventana_Tipo_Apertura_Detalle, _formPrincipal)
        frmUsuario.idUsuario = idUsuario
        frmUsuario.ShowDialog()
    End Sub

    Private Sub cmdNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNuevo.Click
        Dim frmUsuario As New frmUsuario(Constantes.Ventana_Tipo_Apertura_Nuevo, _formPrincipal)
        frmUsuario.ShowDialog()
    End Sub

    Private Sub cmdModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdModificar.Click
        Dim myAccesoDatos As New AccesoDatos
        Dim filaSeleccionada As DataGridViewRow
        Dim idUsuario As New String("")
        For Each filaSeleccionada In gridUsuarios.SelectedRows
            idUsuario = filaSeleccionada.Cells(0).Value
        Next

        Dim frmUsuario As New frmUsuario(Constantes.Ventana_Tipo_Apertura_Edicion, _formPrincipal)
        frmUsuario.idUsuario = idUsuario
        frmUsuario.ShowDialog()
    End Sub
End Class